﻿/*
 *  调用C++接口说明 http://confluence.open.com.cn:8090/pages/viewpage.action?pageId=16712410
 */
(function () {
    // Create a new module
    var myModule = angular.module('myModule', []);
    myModule.controller("exampleController", ["$scope", '$http', function ($scope, $http) {
        $scope.init = function () {
            // 勾选"我已阅读"才可以开始识别
            $('#recognitionbtn').attr("disabled","disabled").css({"cursor": "not-allowed"});
            $("#agree").change(function(){
                var isChecked = document.getElementById('agree').checked;
                if(isChecked){
                    $('#recognitionbtn').removeAttr("disabled").css({"cursor": "pointer"});
                }else{
                    $('#recognitionbtn').attr("disabled","disabled").css({"cursor": "not-allowed"});
                }
            });

            // 如果是客户端,调用客户端方法打开摄像头,否则调用页面js打开
            try {
                // 获取页面上的框所在位置,决定客户端窗口显示位置
                var offsetLeft = $(".camerbox").offset().left;
                var offsetTop = $(".camerbox").offset().top;

                CSharpFunction.closeCamera(); // 关闭摄像头  打开摄像头前先关闭,否则会报错
                CSharpFunction.showDialog(offsetLeft, offsetTop, 240);// 打开客户端摄像窗口.  参数说明(left,top,height) 宽高按4:3比例自动生成宽度

                // 在客户端禁止出现滚动条,保证拍照窗口的位置
                var smHeight = $(window).height() - $(".toparea").innerHeight() - $(".main").innerHeight() - $(".btn_box").height() - 15;// 15是margin + padding
                $(".shengming").css({"height": smHeight + "px"});

                // 识别验证
                $('#recognitionbtn').click(function () {
                    CSharpFunction.captureByDialog();// 客户端开始拍照
                });

                //重新渲染
                $('#rerecognitionbtn').click(function () {
                    $(this).hide();
                    $("#recognitionbtn").show().val("识别验证").removeAttr("disabled");
                    $("#result").text("");
                    CSharpFunction.displayViewFinder();// 重新拍照
                });
            } catch (errs) {
                $scope.byH5();
            }

            // 验证失败跳转
            $("#promisebtn").click(function () {
                window.location.href = '/Examinee/Promise?token=' + _token;// 承诺书
            });
        };

        $scope.byH5 = function () {
            $('#camerbox').openWebCam({
                width: 320,
                height: 240
            });

            // 识别验证
            $('#recognitionbtn').click(function () {
                $('#camerbox').openGetCamerPic({
                    cb: function (data) {
                        //alert(data);
                        faceCompare(2, data);// 考试抓拍:1 登录拍照:2
                    }
                });
            });
            //重新渲染
            $('#rerecognitionbtn').click(function () {
                $(this).hide();
                $("#recognitionbtn").show().val("识别验证").removeAttr("disabled");
                $("#result").text("");
                $('#camerbox').removeCamerPic();
            });
        };

        // 人脸识别对比
        window.faceCompare = function (type, data) {
            $("#recognitionbtn").val("验证中...").attr("disabled");

            if (data.indexOf('data:image/png;base64,') != -1) {
                data = data.substring(22);// 截取掉图片前面的  data:image/png;base64,
            }
            if (data.indexOf('data:image/jpeg;base64,') != -1) {
                data = data.substring(23);// 截取掉图片前面的  data:image/jpeg;base64,
            }
            var data = {token: _token, type: type, data: data};
            $http.post("/Examinee/SaveExamineePhoto", data).success(function (data) {
                if (data.resultType == "Success") {
                    if (data.appendData == 1) {
                        window.location.href = 'ExamPaper?token=' + _token;
                    } else {
                        $("#result").text("人脸识别验证不通过！").css("color", "red");
                        $("#recognitionbtn").hide();
                        $("#rerecognitionbtn").show();// 重新识别
                        $("#promisebtn").show();// 承诺本人
                    }
                } else {
                    alert(data.message);
                    $("#rerecognitionbtn").click();
                }
            }).error(function () {
                alert('出现错误，请重试！');
                $("#rerecognitionbtn").click();
            });
        };
        $scope.init();

    }])
})();

/*=============================抓拍照片 C++直接调用的方法  start========================*/

function showImage(base64) {
    //alert(base64);
    //show_image(base64, 276, 110, 'Captured Image');

    faceCompare(2, base64);// 考试抓拍:1   登录拍照:2
}

function show_image(src, width, height, alt) {
    var img = document.createElement("img");
    img.src = src;
    img.width = width;
    img.height = height;
    img.alt = alt;

    // This next line will just add it to the <body> tag
    document.body.appendChild(img);
}

/*==================C++直接调用的方法  end========================*/

// 监听窗口关闭事件
window.onbeforeunload = function (e) {
    try {
        CSharpFunction.closeDialog();// 关闭客户端摄像窗口
    } catch (err) {

    }
};


